# 导入文本分割器
from langchain.text_splitter import RecursiveCharacterTextSplitter, CharacterTextSplitter

if __name__ == '__main__':
    #测试长文本
    some_text = """在编写文档时，作者将使用文档结构对内容进行分组。 \
    这可以向读者传达哪些想法是相关的。 例如，密切相关的想法\
     是在句子中。 类似的想法在段落中。 段落构成文档。 \n\n\
    段落通常用一个或两个回车符分隔。 \
    回车符是您在该字符串中看到的嵌入的“反斜杠 n”。 \
    句子末尾有一个句号，但也有一个空格。\
    并且单词之间用空格分隔"""
    print(len(some_text))

    c_splitter = CharacterTextSplitter(
        chunk_size=80,
        chunk_overlap=0,
        separator=' '
    )

    '''
    对于递归字符分割器，依次传入分隔符列表，分别是双换行符、单换行符、空格、空字符，
    因此在分割文本时，首先会采用双分换行符进行分割，同时依次使用其他分隔符进行分割
    '''

    r_splitter = RecursiveCharacterTextSplitter(
        chunk_size=80,
        chunk_overlap=0,
        separators=["\n\n", "\n", " ", ""]
    )

    texts1 = c_splitter.split_text(some_text)
    print("texts1: ", texts1)

    texts2 = r_splitter.split_text(some_text)
    print("texts2: ", texts2)

    r_splitter = RecursiveCharacterTextSplitter(
        chunk_size=30,
        chunk_overlap=0,
        separators=["\n\n", "\n", "(?<=\。 )", " ", ""])
    texts3 = r_splitter.split_text(some_text)
    print("texts3: ", texts3)
